﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using negocios;
using objetos;
using publico;

namespace softsales.pagina.empresa_condicao_pagamento
{
    public partial class empresa_condicao_pagamento_formulario : System.Web.UI.Page
    {
        OBJ_TB_EMPRESA_CONDICAO_PAGAMENTO o_tb_empresa_condicao_pagamento = new OBJ_TB_EMPRESA_CONDICAO_PAGAMENTO();
        BLL_TB_EMPRESA_CONDICAO_PAGAMENTO b_tb_empresa_condicao_pagamento = new BLL_TB_EMPRESA_CONDICAO_PAGAMENTO();


        OBJ_TB_CONDICAO_PAGAMENTO o_tb_condicao_pagamento = new OBJ_TB_CONDICAO_PAGAMENTO();
        BLL_TB_CONDICAO_PAGAMENTO b_tb_condicao_pagamento = new BLL_TB_CONDICAO_PAGAMENTO();

        BLL_TB_LOG_ERRO b_tb_log_erro = new BLL_TB_LOG_ERRO();

        OBJ_TB_EMPRESA o_tb_empresa = new OBJ_TB_EMPRESA();
        BLL_TB_EMPRESA b_tb_empresa = new BLL_TB_EMPRESA();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (PUB_SESSAO.Logado())
            {

                if (!IsPostBack)
                {
                    b_tb_empresa.PreencheControleWeb(DDL_ID_EMPRESA, true);               
                    b_tb_condicao_pagamento.PreencheControleWeb(LST_CONDICAO_PAGAMENTO_DISPONIVEL, false);

                    if (Request["id"] != null)
                    {
                        LBL_TITULO_PAGINA.Text = "Editar Empresa x Condição de Pagamento";

                        Editar(Request["id"].ToString());
                    }
                    else
                    {
                        LBL_TITULO_PAGINA.Text = "Incluir Empresa x Condição de Pagamento";
                        TXT_DT_CADASTRO.Text = DateTime.Now.ToShortDateString();
                        TXT_DT_CADASTRO.Enabled = false;
                        CHK_SIT_ATIVO.Checked = true;
                    }

                }

            }

        }

        private void Editar(String id)
        {
            o_tb_empresa_condicao_pagamento = b_tb_empresa_condicao_pagamento.SelecionarObjetoPorId(Convert.ToInt32(id));
            List<OBJ_TB_CONDICAO_PAGAMENTO> lista_condicao_pagamento = b_tb_condicao_pagamento.SelecionarLista();

            foreach(OBJ_TB_EMPRESA_CONDICAO_PAGAMENTO  empresa_condicao_pagamento in b_tb_empresa_condicao_pagamento.SelecionarLista(string.Format("tb_empresa_condicao_pagamento.id_empresa = {0}", o_tb_empresa_condicao_pagamento.id_empresa),""))
            {

                TXT_DT_CADASTRO.Text = PUB_FUNCOES.FormataDataBR(empresa_condicao_pagamento.dt_cadastro.ToString());
                DDL_ID_EMPRESA.SelectedValue = empresa_condicao_pagamento.id_empresa.ToString();
                CHK_SIT_ATIVO.Checked = Convert.ToBoolean(empresa_condicao_pagamento.sit_ativo.ToString());
                LST_CONDICAO_PAGAMENTO_SELECIONADO.Items.Add(new ListItem(lista_condicao_pagamento.Find((condicao) => condicao.id == empresa_condicao_pagamento.id_condicao_pagamento).desc_condicao_pagamento.ToString(), empresa_condicao_pagamento.id_condicao_pagamento.ToString()));

            }

            foreach (ListItem item in LST_CONDICAO_PAGAMENTO_SELECIONADO.Items)
            {
                LST_CONDICAO_PAGAMENTO_DISPONIVEL.Items.Remove(item);
            }
            
            TXT_DT_CADASTRO.Enabled = false;

        }

        protected void BTN_SALVAR_Click(object sender, EventArgs e)
        {
            string msg = string.Empty;
            
            if (DDL_ID_EMPRESA.SelectedValue != string.Empty && LST_CONDICAO_PAGAMENTO_SELECIONADO.Items.Count > 0)
            {
                int id_empresa = Convert.ToInt32(DDL_ID_EMPRESA.SelectedValue);

                List<OBJ_TB_EMPRESA_CONDICAO_PAGAMENTO> lista_empresa_condicao_pagamento = b_tb_empresa_condicao_pagamento.SelecionarLista(string.Format("tb_empresa_condicao_pagameto.id_empresa= {0}",id_empresa),"");
                b_tb_empresa_condicao_pagamento.ExcluirLista(lista_empresa_condicao_pagamento);
                
            
                foreach (ListItem item in LST_CONDICAO_PAGAMENTO_SELECIONADO.Items)
                {
                    o_tb_empresa_condicao_pagamento = new OBJ_TB_EMPRESA_CONDICAO_PAGAMENTO();
                    o_tb_empresa_condicao_pagamento.id_empresa = Convert.ToInt32(DDL_ID_EMPRESA.SelectedValue);
                    o_tb_empresa_condicao_pagamento.id_usuario = PUB_SESSAO.Id;
                    o_tb_empresa_condicao_pagamento.sit_ativo = Convert.ToBoolean(CHK_SIT_ATIVO.Checked);
                    o_tb_empresa_condicao_pagamento.id_condicao_pagamento = Convert.ToInt32(item.Value);
                    o_tb_empresa_condicao_pagamento.dt_cadastro = DateTime.Now;
                    b_tb_empresa_condicao_pagamento.Incluir(o_tb_empresa_condicao_pagamento);
                }
    
                    msg = "Inclusão/Alteração realizada com sucesso";
                
                Master.MSG_ALERTA(msg, "default.aspx", false);
            }





        }

        protected void BTN_CANCELAR_Click(object sender, EventArgs e)
        {
            Response.Redirect("default.aspx");
        }

        protected void IMG_BTN_ADICIONAR_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                AdicionarItem();
            }
            catch (Exception ex)
            {
                b_tb_log_erro.IncluirLogErro(ex);
                Master.MSG_ALERTA("Erro ao tentar adicionar condição pagamento");
            }
        }

        protected void IMG_BTN_REMOVER_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                RemoverItem();
            }
            catch (Exception ex)
            {

                b_tb_log_erro.IncluirLogErro(ex);
                Master.MSG_ALERTA("Erro ao tentar remover condição pagamento");
            }

        }


        private void AdicionarItem()
        {
            foreach (ListItem item in LST_CONDICAO_PAGAMENTO_DISPONIVEL.Items)
            {
                if (item.Selected)
                {
                    LST_CONDICAO_PAGAMENTO_SELECIONADO.Items.Add(item);
                }
            }

            foreach (ListItem item in LST_CONDICAO_PAGAMENTO_SELECIONADO.Items)
            {
                LST_CONDICAO_PAGAMENTO_DISPONIVEL.Items.Remove(item);
            }
        }

        private void RemoverItem()
        {
            foreach (ListItem item in LST_CONDICAO_PAGAMENTO_SELECIONADO.Items)
            {
                if (item.Selected)
                {
                    LST_CONDICAO_PAGAMENTO_DISPONIVEL.Items.Add(item);
                }
            }

            foreach (ListItem item in LST_CONDICAO_PAGAMENTO_DISPONIVEL.Items)
            {
                LST_CONDICAO_PAGAMENTO_SELECIONADO.Items.Remove(item);
            }

        }


    }
}